#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
清理原数据库中的指标表
在确认新架构正常工作后，可以使用此脚本删除原数据库中的指标表
"""

import os
import sys

# 添加项目路径到Python路径
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

from app import app, db
from sqlalchemy import text

# 定义需要删除的旧指标表
OLD_METRICS_TABLES = [
    'daily_sales_summary',
    'book_sales_ranking', 
    'category_sales_summary',
    'inventory_turnover',
    'publisher_sales_ranking',
    'category_inventory_summary',
    'regional_sales_summary',
    'document_statistics'
]

def show_tables():
    """显示当前数据库中的所有表"""
    with app.app_context():
        # 获取所有表名
        with db.engine.connect() as conn:
            result = conn.execute(text("SHOW TABLES"))
            tables = [row[0] for row in result]
            print("当前数据库中的表:")
            for table in tables:
                print(f"  - {table}")

def drop_old_metrics_tables():
    """删除旧的指标表"""
    with app.app_context():
        # 确认操作
        print("警告：此操作将永久删除以下表:")
        for table in OLD_METRICS_TABLES:
            print(f"  - {table}")
        
        confirm = input("\n确认要删除这些表吗？(输入 'yes' 确认): ")
        if confirm.lower() != 'yes':
            print("操作已取消")
            return
        
        try:
            # 删除表
            with db.engine.connect() as conn:
                for table in OLD_METRICS_TABLES:
                    conn.execute(text(f"DROP TABLE IF EXISTS {table}"))
                    print(f"已删除表: {table}")
            
            print("所有旧指标表已成功删除")
        except Exception as e:
            print(f"删除表时出错: {e}")
            import traceback
            traceback.print_exc()

def main():
    """主函数"""
    print("=== 数据库表清理工具 ===")
    print("1. 显示当前数据库中的所有表")
    print("2. 删除旧的指标表")
    
    choice = input("请选择操作 (1 或 2): ")
    
    if choice == '1':
        show_tables()
    elif choice == '2':
        drop_old_metrics_tables()
    else:
        print("无效选择")

if __name__ == '__main__':
    main()